package com.mycompany.sigemp.web;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.mycompany.sigemp.model.Empleado;
import com.mycompany.sigemp.service.EmpleadoService;

@Controller
public class EmpleadoController {
	@Autowired
	EmpleadoService eService;
	
	@RequestMapping(value="/buscarEmpleado.htm", method=RequestMethod.GET)
	public String vistaBuscarEmpleado(){
		return "viewBuscarEmpleado";
	}
	
	@RequestMapping(value="/buscarEmpleado.htm",method=RequestMethod.POST)
	public String procesarBusqueda(@RequestParam String txtCodigo, Model model){
		if(txtCodigo.equals("")){
			return "viewBuscarEmpleado";
		}
		Empleado empleado = eService.obtenerEmpleadoPorCodigo(txtCodigo); 
		if(empleado == null){
			return "viewBuscarEmpleado";
		}
		model.addAttribute( "empleado" , empleado);
		return "viewDetalleEmpleado";
	}
	
	@RequestMapping(value="/registrarEmpleado.htm", method=RequestMethod.GET)
	public String vistaRegistrar(Model model){
		model.addAttribute(new Empleado());
		return "viewRegistrarEmpleado";
	}
	
	@RequestMapping(value="/registrarEmpleado.htm",method=RequestMethod.POST)
	public String procesarRegistroDelEmpleado(@Valid Empleado empleado, BindingResult result, Model model){
		if (result.hasErrors()) {
			return "viewRegistrarEmpleado";
		}
		eService.resgistrarUnEmpleado(empleado);
		model.addAttribute(new Empleado());
		return "viewRegistrarEmpleado";
	}
	
	@RequestMapping(value = "/updateEmpleado.htm", method = RequestMethod.GET)
    public String verParaActualizar(@RequestParam String var, Model model){
        Empleado e = eService.obtenerEmpleadoPorCodigo(var);
        model.addAttribute( "empleado" , e);     
        return "viewActualizarEmpleado";
    }
	
	@RequestMapping(value="/updateEmpleado.htm",method=RequestMethod.POST)
	public String actualizarDatosDelEmpleado(@Valid Empleado empleado, BindingResult result, Model model){
		if (result.hasErrors()) {
			return "viewActualizarEmpleado";
		}
		eService.actualizarEmpleado(empleado);
		Empleado em = eService.obtenerEmpleadoPorCodigo(empleado.getCodigo()); 
		model.addAttribute( "empleado" , em);
		return "viewDetalleEmpleado";	
	}
	
	@RequestMapping(value = "/eliminarEmpleado.htm", method = RequestMethod.GET)
    public String verParaEliminar(@RequestParam String var, Model model){
        Empleado e = eService.obtenerEmpleadoPorCodigo(var);
        model.addAttribute( "empleado" , e);     
        return "viewEliminarEmpleado";
    }
	
	@RequestMapping(value="/eliminarEmpleado.htm",method=RequestMethod.POST)
	public String eliminarEmpleado(@Valid Empleado empleado, BindingResult result, Model model){
		if (result.hasErrors()) {
			return "viewEliminarEmpleado";
		}
		eService.eliminarUnEmpleado(empleado);
		return "viewBuscarEmpleado";	
	}

}



